import os

import numpy as np
import pandas as pd

DATA_DIR = os.path.join(os.getcwd(), 'DATA/atm_opt')


# 读取OP_1.csv文件（OP_1.csv由BDgetGPS目录下的main.py调用百度地图API生成）
def getData(fpath=None):
    if fpath is None:
        fpath = os.path.join(DATA_DIR, 'OP_1.csv')
    try:
        data = pd.read_csv(fpath, encoding="gbk")
    except UnicodeDecodeError:
        data = pd.read_csv(fpath, encoding="utf-8")
    except:
        print("文件不存在或路径错误")
        return
    return data


# 对各个网点的经纬度以现金中心为原点标准化，结果保存在new_OP_1.csv文件中
def NormalData(data, CENTER):
    lngArr = np.array(data["经度"])  # 各网点经度坐标
    latArr = np.array(data["纬度"])  # 各网点纬度坐标

    lngStd = np.std(lngArr, ddof=1)  # 计算经度的总体标准差
    latStd = np.std(latArr, ddof=1)  # 计算维度的总体标准差

    lngArr = (lngArr - CENTER[0]) / lngStd  # 正规化经度坐标
    latArr = (latArr - CENTER[1]) / latStd  # 正规化纬度坐标

    points = []
    for i in range(len(latArr)):
        points.append([lngArr[i], latArr[i]])

    if not os.path.exists(os.path.join(DATA_DIR, "new_OP_1.csv")):
        new_data = pd.DataFrame({"纬度": latArr, "经度": lngArr})
        new_data.to_csv(os.path.join(DATA_DIR, "new_OP_1.csv"), encoding='utf-8', index=bool(0))

    return np.array(points)
